/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.edu.uniandes.vehialpes.facades;

import co.edu.uniandes.vehialpes.entity.Usuario;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Expression;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;

/**
 *
 * @author Cquiroga
 */
@Stateless
public class UsuarioFacade extends AbstractFacade<Usuario> implements UsuarioFacadeLocal {
    @PersistenceContext(unitName = "VehiAlpesPU")
    private EntityManager em;

    private Class<Usuario> usuarioClass;
    
    protected EntityManager getEntityManager() {
        return em;
    }

    public UsuarioFacade() {
        super(Usuario.class);
    }
    
     public Usuario find(Object id) {
        //return getEntityManager().find(usuarioClass, id);
        javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
        CriteriaBuilder criteriaBuilder = getEntityManager().getCriteriaBuilder();
        
    
        Expression<String> expresion = criteriaBuilder.upper(criteriaBuilder.literal((String) id));        
        Predicate predicate = criteriaBuilder.like(cq.from(usuarioClass), expresion);        
        cq.where(predicate);
        Root from = cq.from(usuarioClass);
        CriteriaQuery<Object> select = cq.select(from); 
        cq.where(predicate);        
        return (Usuario) getEntityManager().createQuery(cq).getResultList();         
         
    }
     
    public List<Usuario> findAll(){
        javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
        cq.select(cq.from(usuarioClass));
        return getEntityManager().createQuery(cq).getResultList();
    }
    
    public void create(Usuario usu){
        super.create(usu);
    }
    
    
}
